//
//  hiding_inherited_func.hpp
//  learnC++
//
//  Created by liuzhibing on 2018/6/13.
//  Copyright © 2018年 yunfan.com. All rights reserved.
//

#ifndef hiding_inherited_func_hpp
#define hiding_inherited_func_hpp

#include <stdio.h>
#include <iostream>

class Base4 {
    
public:
    int m_value;
    
public:
    Base4(int value):m_value(value){
        
    }
    
    int getValue(){return m_value;}
    
protected:
    void printValue(){std::cout << m_value;}
    
};


class Derived3 : public Base4 {
    
private:
    //修改公共类成员的访问权限(不想外界修改)
    using Base4::m_value;
    
public:
    Derived3(int value):Base4(value){
        
    }
    
    int getValue() = delete;//您还可以在派生类中将成员函数标记为已删除，这可确保根本不能通过派生对象调用它们
    
    //首先，您只能更改派生类通常可以访问的基本成员的访问说明符。 因此，永远不能将基本成员的访问说明符从private更改为protected或public，因为派生类不能访问基类的私有成员。
    //修改访问等级(外界可以访问了)
    using Base4::printValue;//NOTE:没有括号  using的另一种用法
    
    /*
     复习：using的3种用法
     1、修改访问等级
     2、using TYPE = int;
     3、using namespace iOS
     */
};

#endif /* hiding_inherited_func_hpp */
